专利摘要:
一種可重新配置的指令編碼方法,包括下列步驟。統計一應用程式之一指令分佈,並據以找到具較高使用率之多個指令配對。依據一原始指令表中的多個保留區段對此些指令配對中的多個指令進行重複編碼,使得此些指令具有對應的重新配置編碼,且得到基於原始指令表延伸而包括此些重新配置編碼之一重新配置指令表。利用一編譯器依據重新配置指令表及連續的多個執行指令產生多個機器碼,此些機器碼的漢明距離不大於依據原始指令表及此些執行指令產生的多個機器碼的漢明距離。
公开号:TW201319934A
申请号:TW100140526
申请日:2011-11-07
公开日:2013-05-16
发明作者:Huang-Lun Lin;Ching-Hsiang Chuang;Shui-An Wen
申请人:Ind Tech Res Inst;
IPC主号:G06F9-00
专利说明:
可重新配置的指令編碼方法及處理器架構
本發明是有關於一種可重新配置的指令編碼方法及處理器架構。
傳統的處理器會內建一指令表(instruction table),編譯器(compiler)會依據此指令表將要執行的指令轉換為機器碼(machine code)以供處理器執行相對應的動作。然而,此指令表係為通用的,並未針對個別的應用程式做最佳化的處理。如此一來,在對單一應用程式的多個執行指令進行編譯及組譯之後,可能會導致連續的執行指令間,指令匯流排上的訊號相位產生劇烈的變化,進而使得CMOS電路輸入端會發生訊號邏輯位準的急遽轉換,並伴隨著嚴重的功率消耗。
如果處理器處在設計階段,則可以重新設計指令表以使得其更加適用於某些應用程式。然而,對於已經處於設計完成階段的處理器而言,重新設計指令表會導致非常嚴重的相容性問題,使得編譯完產生的機器碼無法在原有指令表設計的處理器上執行。此外,由於應用程式發展迅速且多元化,處理器因內建且無法改變的指令表而始終難以對新發展的所有應用程式均達到最佳化的表現。
本揭露是有關於一種可重新配置的指令編碼方法及處理器架構,利用原始指令表中的保留區段針對使用率高的指令配對進行重複編碼,可降低指令匯流排的位元轉換率,達到低功率消耗的目的。
根據本揭露之第一方面,提出一種可重新配置的指令編碼方法,包括下列步驟。統計一應用程式之一指令分佈,並據以找到具較高使用率之多個指令配對。依據一原始指令表中的多個保留區段對此些指令配對中的多個指令進行重複編碼,使得此些指令具有對應的重新配置編碼,且得到基於原始指令表延伸而包括此些重新配置編碼之一重新配置指令表。利用一編譯器依據此重新配置指令表及連續的多個執行指令產生多個機器碼,此些機器碼的漢明距離不大於依據原始指令表及此些執行指令產生的多個機器碼的漢明距離。
根據本揭露之第二方面,提出一種處理器架構,包括一指令取得單元、一指令重編碼單元、一多工器、一指令解碼單元以及一執行單元。指令取得單元用以取得一應用程式之連續的多個執行指令對應的多個機器碼。指令重編碼單元用以載入一重新配置指令表,並依據重新配置指令表判斷此些機器碼是否為重新配置編碼。若機器碼為重新配置編碼,則指令重編碼單元將重新配置編碼轉換為執行指令對應之一原始機器碼。多工器耦接至指令取得單元與指令重編碼單元,用以當機器碼為重新配置編碼時,輸出轉換後的原始機器碼。指令解碼單元用以解碼原始機器碼為對應之執行指令。執行單元用以執行執行指令。其中,重新配置指令表包括一原始指令表及依據原始指令表中的多個保留區段對多個指令配對中的多個指令進行重複編碼而得到的此些重新配置編碼,此些指令配對在應用程式中具有較高的使用率。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉一實施例,並配合所附圖式,作詳細說明如下:
本揭露所提出之可重新配置的指令編碼方法及處理器架構,利用原始指令表(original instruction table)中的保留區段(reserved sections)針對使用率高的指令配對(instruction pairs)進行重複編碼,可降低指令匯流排的位元轉換率,以期達到低功率消耗的目的。
請參照第1A圖,其繪示依照一實施例之可重新配置的指令編碼方法之一例之流程圖。於步驟S100中,統計一應用程式之一指令分佈,並據以找到具較高使用率之多個指令配對。其中,可利用一編譯器(compiler)或一程式以實現上述之統計步驟。於步驟S110中,依據一原始指令表中的多個保留區段對此些指令配對中的多個指令進行重複編碼,使得此些指令具有對應的重新配置編碼,且得到基於原始指令表延伸而包括此些重新配置編碼之一重新配置指令表。其中,編譯器會內建一份原始指令表。
一般處理器在進行指令編碼時,因為位元數目或是擴充性問題會在原始指令表中留下多個保留區段(或是保留位元(reserved bits))。使用率較高的此些指令配對中的多個指令可依據彼此間的一拓樸關係而分別決定要填入的保留區段,進而產生對應的重新配置編碼,然填入的方法並不限於此。藉由利用此些保留區段來填入多個指令新的重新配置編碼,本揭露之重新配置指令表可以保有多個重新配置編碼。
於步驟S120中,利用編譯器依據重新配置指令表進行重複編碼的動作。步驟S120實質上利用編譯器依據重新配置指令表及連續的多個執行指令在重複編碼後產生多個機器碼,此些機器碼的漢明距離(Hamming distance)不大於依據原始指令表及此些執行指令產生的多個機器碼的漢明距離。在產生機器碼的過程中,編譯器或組譯器(assembler)實質上針對具有重新配置編碼的執行指令,會選擇一個最佳的編碼方式,使其與前後執行指令的漢明距離為最短。
茲舉無內部互鎖管線階層微處理器(Microprocessor without Interlocked Pipeline Stage,MIPS)架構的32位元固定長度編碼為例做說明。在編碼中與指令相關的是6位元的操作碼(opcode)以及6位元的功能碼(function)。假定操作碼(opcode)設定為000000時,指令為REG格式,以功能碼(function)選擇要執行的運算,則MIPS架構的指令表如表1所示,其中斜線區域即為保留區段。

觀察表1可以得知,在指令表中mult指令的原始機器碼為011000,add指令的原始機器碼為100000,srl指令的原始機器碼為000010,則以乘加動作後進行量化動作(mult→add→srl)為例,原始機器碼011000→100000→000010之漢明距離為3+2=5。現在針對add指令作重複編碼,將指令表中空的保留區段重複分配給add指令,例如為表1中所示的001010。則乘加動作後進行量化動作的機器碼變為011000→001010→000010,其漢明距離為2+1=3。在上述情況下可節省40%的訊號轉態變化。在步驟S120中,編譯器或組譯器實質上產生連續的執行指令間指令匯流排上訊號相位變化最少的機器碼。
於步驟S120之後,接續步驟S130,對應於此應用程式的重新配置指令表會被存入一暫存器。在本揭露中,暫存器實質上可儲存多個重新配置指令表,每一個重新配置指令表對應至一單一應用程式,並經由上述的多個步驟得到。
接著請同時參照第1B圖及第2圖,第1B圖繪示依照一實施例之可重新配置的指令編碼方法之另一例之流程圖,第2圖繪示依照一實施例之處理器架構之示意圖。於第2圖中,茲舉處理器架構200包括一指令取得單元(instruction fetch unit)210、一指令重編碼單元(instruction re-encoding unit)220、一多工器230、一指令解碼單元(instruction decoding unit)240以及一執行單元(execution unit)250為例做說明,然不限於此。
於步驟S140中,指令取得單元210取得應用程式之連續的多個執行指令對應的多個機器碼。亦即,處理器架構200之指令取得單元210實質上會取得(fetch)多個執行指令,並從記憶體中取得對應的機器碼。於步驟S150中,指令重編碼單元220從暫存器載入對應於應用程式的重新配置指令表,並依據重新配置指令表判斷此些機器碼是否為重新配置編碼。當機器碼為重新配置編碼時,則於步驟S160中,指令重編碼單元220將重新配置編碼轉換為執行指令對應之原始機器碼,再送到指令解碼單元240。若當機器碼非為重新配置編碼時,則表示機器碼為執行指令對應之原始機器碼,則直接送到指令解碼單元240。
於步驟S170中,指令解碼單元240亦內建一份原始指令表,故可對接收到的原始機器碼進行解碼而得到對應的執行指令。於步驟S180中,執行單元250依據執行指令進行相對應的操作。
本揭露上述實施例所揭露之可重新配置的指令編碼方法及處理器架構,藉由統計得到應用程式中使用率較高的指令配對,並利用原始指令表中的保留區段對指令配對進行重複編碼而產生重新配置指令表。如此一來,本揭露之可重新配置的指令編碼方法及處理器架構不需變動現行處理器解碼方式,即可兼具相容性而得以相容原始指令表對應的指令集架構(instruction set architecture,ISA)。更進一步地,原則上可減少訊號轉態變化率以降低指令匯流排的位元轉換率,可適應於各種低功率消耗需求的用途。
綜上所述,雖然本發明已以多個實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
200...處理器架構
210...指令取得單元
220...指令重編碼單元
230...多工器
240...指令解碼單元
250...執行單元
第1A圖繪示依照一實施例之可重新配置的指令編碼方法之一例之流程圖。
第1B圖繪示依照一實施例之可重新配置的指令編碼方法之另一例流程圖。
第2圖繪示依照一實施例之處理器架構之示意圖。
权利要求:
Claims (10)
[1] 一種可重新配置的指令編碼方法,包括:統計一應用程式之一指令分佈,並據以找到具較高使用率之複數個指令配對;依據一原始指令表中的複數個保留區段對該些指令配對中的複數個指令進行重複編碼,使得該些指令具有對應的重新配置編碼,且得到基於該原始指令表延伸而包括該些重新配置編碼之一重新配置指令表;以及利用一編譯器依據該重新配置指令表及連續的複數個執行指令產生複數個機器碼,該些機器碼的漢明距離不大於依據該原始指令表及該些執行指令產生的複數個機器碼的漢明距離。
[2] 如申請專利範圍第1項所述之可重新配置的指令編碼方法,其中該些指令配對中的該些指令依據一拓樸關係圖分別填入該些保留區段而得到對應的該些重新配置編碼。
[3] 如申請專利範圍第1項所述之可重新配置的指令編碼方法,更包括:將該重新配置指令表存入一暫存器;利用一處理器取得該些機器碼,並依據該重新配置指令表判斷該些機器碼是否為該些重新配置編碼,當該機器碼為該重新配置編碼時,則將該重新配置編碼轉換為該執行指令對應之一原始機器碼;以及解碼該原始機器碼為對應之該執行指令並執行該執行指令。
[4] 如申請專利範圍第3項所述之可重新配置的指令編碼方法,當該機器碼非為該重新配置編碼時,則該機器碼為該執行指令對應之該原始機器碼,該處理器解碼該原始機器碼為該執行指令並執行該執行指令。
[5] 如申請專利範圍第1項所述之可重新配置的指令編碼方法,其中該統計步驟係由該編譯器或一程式實現。
[6] 如申請專利範圍第1項所述之可重新配置的指令編碼方法,其中該重複編碼步驟係由該編譯器或一程式實現。
[7] 一種處理器架構,包括:一指令取得單元,用以取得一應用程式之連續的複數個執行指令對應的複數個機器碼;一指令重編碼單元,用以載入一重新配置指令表,並依據該重新配置指令表判斷該些機器碼是否為複數個重新配置編碼,若該機器碼為該重新配置編碼,則該指令重編碼單元將該重新配置編碼轉換為該執行指令對應之一原始機器碼;一多工器,耦接至該指令取得單元與該指令重編碼單元,用以當該機器碼為該重新配置編碼時,輸出轉換後的該原始機器碼;一指令解碼單元,用以解碼該原始機器碼為對應之該執行指令;以及一執行單元,用以執行該執行指令;其中,該重新配置指令表包括一原始指令表及依據該原始指令表中的複數個保留區段對複數個指令配對中的複數個指令進行重複編碼而得到的該些重新配置編碼,該些指令配對在該應用程式中具有較高的使用率。
[8] 如申請專利範圍第7項所述之處理器架構,其中該些執行指令及該重新配置指令表對應的該些機器碼的漢明距離不大於依據該原始指令表及該些執行指令產生的複數個機器碼的漢明距離。
[9] 如申請專利範圍第7項所述之處理器架構,其中該指令重編碼單元從一暫存器載入該重新配置指令表。
[10] 如申請專利範圍第7項所述之處理器架構,其中當該機器碼非為該重新配置編碼時,則該多工器輸出該機器碼至該指令解碼單元,該指令解碼單元解碼該機器碼為對應之該執行指令,該執行單元執行該執行指令。
类似技术:
公开号 | 公开日 | 专利标题
CN105393242B|2019-04-23|将空间阵列纳入一个或多个可编程处理器核
JP2005227942A|2005-08-25|プロセッサ及びコンパイラ
US20030028844A1|2003-02-06|Method and apparatus for implementing a single cycle operation in a data processing system
US8989242B2|2015-03-24|Encoding/decoding processor and wireless communication apparatus
Wang et al.2015|Code compression for embedded systems using separated dictionaries
CN106537914B|2019-10-11|通过限制的进位运算来执行算术编译的方法和设备
TWI442317B|2014-06-21|可重新配置的指令編碼方法及處理器架構
Matai et al.2014|Energy efficient canonical huffman encoding
US20130275721A1|2013-10-17|Reconfigurable instruction encoding method, execution method, and electronic apparatus
US8707013B2|2014-04-22|On-demand predicate registers
US10579381B2|2020-03-03|Encoding and decoding variable length instructions
Bonny et al.2010|Huffman-based code compression techniques for embedded processors
Grzes et al.2014|Sequential algorithm for low-power encoding internal states of finite state machines
Helkala et al.2014|Variable length instruction compression on transport triggered architectures
Briffa2013|A GPU implementation of a MAP decoder for synchronization error correcting codes
JP2006004076A|2006-01-05|半導体集積装置の設計方法、設計プログラム、および記録媒体
Qin et al.2009|A universal placement technique of compressed instructions for efficient parallel decompression
CN105027076A|2015-11-04|相加-比较-选择指令
Jin et al.2014|NOP compression scheme for high speed DSPs based on VLIW architecture
Wang et al.2011|An improved BitMask based code compression algorithm for embedded systems
CN107615839A|2018-01-19|处理子信令段的方法、处理装置、接入点和站点
CN102662635A|2012-09-12|超长指令字变长指令实现方法及实现该方法的处理器
JP2006270330A|2006-10-05|可変長符号復号回路
TW201419140A|2014-05-16|可重新配置的指令編碼方法、執行方法及電子裝置
KR20160046613A|2016-04-29|카운터 데이터 처리 방법 및 디바이스
同族专利:
公开号 | 公开日
TWI442317B|2014-06-21|
US20130117536A1|2013-05-09|
US9069548B2|2015-06-30|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US3921143A|1971-12-29|1975-11-18|Ibm|Minimal redundancy encoding method and means|
US4656583A|1984-08-13|1987-04-07|International Business Machines Corporation|Method for improving global common subexpression elimination and code motion in an optimizing compiler|
US5790874A|1994-09-30|1998-08-04|Kabushiki Kaisha Toshiba|Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction|
US6813705B2|2000-02-09|2004-11-02|Hewlett-Packard Development Company, L.P.|Memory disambiguation scheme for partially redundant load removal|
JP3664473B2|2000-10-04|2005-06-29|インターナショナル・ビジネス・マシーンズ・コーポレーション|プログラムの最適化方法及びこれを用いたコンパイラ|
GB2375695B|2001-05-19|2004-08-25|At & T Lab Cambridge Ltd|Improved power efficency in microprocessors|
TW536684B|2001-06-20|2003-06-11|Sunplus Technology Co Ltd|Micro-controller architecture capable of increasing the code density by changeable instruction format|
GB2378538A|2001-08-10|2003-02-12|At & T Lab Cambridge Ltd|Saving power in a pipelined processor/memory system by replacing discarded instructions following a branch by a duplicate of the branch instruction|
GB2378537A|2001-08-10|2003-02-12|At & T Lab Cambridge Ltd|Power reduction in microprocessor systems|
US6775787B2|2002-01-02|2004-08-10|Intel Corporation|Instruction scheduling based on power estimation|
US7191350B2|2002-01-30|2007-03-13|Matsushita Electric Industrial Co., Ltd.|Instruction conversion apparatus and instruction conversion method providing power control information, program and circuit for implementing the instruction conversion, and microprocessor for executing the converted instruction|
JP3896087B2|2003-01-28|2007-03-22|松下電器産業株式会社|コンパイラ装置およびコンパイル方法|
KR100508092B1|2003-05-09|2005-08-17|삼성전자주식회사|저전력 모듈로 곱셈을 수행하는 연산장치|
US7707389B2|2003-10-31|2010-04-27|Mips Technologies, Inc.|Multi-ISA instruction fetch unit for a processor, and applications thereof|
US7480809B2|2004-10-15|2009-01-20|Genesis Microchip Inc.|Reducing power consumption of a microprocessor|
TWI275994B|2004-12-29|2007-03-11|Ind Tech Res Inst|Encoding method for very long instruction word DSP processor and decoding method thereof|
CN101232352A|2008-01-08|2008-07-30|华为技术有限公司|重复编码的方法及装置|WO2014148935A1|2013-03-18|2014-09-25|Общество С Ограниченной Ответственностью "Протекшен Технолоджи Ресеч"|Способ защиты машинного кода и неизменяемых данных программы от модификации|
法律状态:
优先权:
申请号 | 申请日 | 专利标题
TW100140526A|TWI442317B|2011-11-07|2011-11-07|可重新配置的指令編碼方法及處理器架構|TW100140526A| TWI442317B|2011-11-07|2011-11-07|可重新配置的指令編碼方法及處理器架構|
US13/448,659| US9069548B2|2011-11-07|2012-04-17|Reconfigurable instruction encoding method and processor architecture|
[返回顶部]